package br.senai.mb;

import java.io.Serializable;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.senai.entidade.Usuario;
import br.senai.modelo.UsuarioDAO;
import br.senai.modelo.impl.UsuarioDAOImpl;
import br.senai.util.Criptografia;

@ManagedBean(name = "usuarioMB")
@ViewScoped
public class UsuarioMB extends ManagedBeanBase implements Serializable {
	
	private static final long serialVersionUID = 1L;

	private Usuario usuario = new Usuario();;
	private List<Usuario> usuarioList = new ArrayList<Usuario>();
	 
	public UsuarioMB() {
		usuarioList = listar();
	}
	
	private List<Usuario> listar() {
		UsuarioDAO usuarioDAO = (UsuarioDAO) createPersistence(UsuarioDAOImpl.class);
		return usuarioDAO.getLista();
	}

	public String salvar(){
		UsuarioDAO usuarioDAO = (UsuarioDAO) createPersistence(UsuarioDAOImpl.class);
		Criptografia cripto = new Criptografia();
		try {
			usuario.setSenha(cripto.encrypt(usuario.getSenha()));
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		
		usuarioDAO.salvar(usuario);
		return "/login.xhtml?faces-redirect=true";
	}

	public String excluir() {
		UsuarioDAO usuarioDAO = (UsuarioDAO) createPersistence(UsuarioDAOImpl.class);
		usuarioDAO.remover(Usuario.class, usuario.getId());
		return "/login.xhtml?faces-redirect=true";
	}
	
	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public List<Usuario> getUsuarioList() {
		return usuarioList;
	}
}
